<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>多态</title>
    <script>
        class Dog{
            constructor(name){
                this.name=name
            }
        }
        class Cat{
            constructor(name){
                this.name=name
            }
        }
        class Person{
            constructor(name){
                this.name=name
            }
        }

        const dog = new Dog("wang")
        const cat = new Cat("miao")

        function sayHello(obj){
            /*
            JS不会检查参数的类型，所以任何数据都可以作为参数传递
            要调用某个函数，无需指定类型，只需对象满足某些条件即可
            比如只要dog和cat里有name属性，就可调用该sayHello函数
            console.log(obj.name+",hi");
            */

            //也可对调用函数类型进行指定，非Person类型不可调用
            if(obj instanceof Person){
                console.log(obj.name+",hi");
            }
        }

        sayHello(dog)
        sayHello(cat)
    </script>
</head>
<body>
    
</body>
</html>